import 'dart:io';

main() {
  print('程序开始，执行main入口函数');
  // requestData().then((res){
  //   print('第一个函数执行完成，结果是$res');
  //   requestData2().then((res2){
  //     print('第二个函数执行完成，结果是$res2');
  //     requestData3().then((res3){
  //       print('第三个函数执行完成，结果是$res3');
  //     });
  //   });
  // });

  // 链式调用
  requestData().then((res){
    print('第一个函数执行完成，结果是$res');
    return requestData2();
  }).then((res2){
    print('第二个函数执行完成，结果是$res2');
    return requestData3();
  }).then((res3){
    print('第三个函数执行完成，结果是$res3');
  }).catchError((err){
    print('请求数据失败:$err');
  });

  print('不能堵塞的代码');
}

// 第一个
Future requestData() {
  return Future(() {
    sleep(Duration(seconds: 2));
    print('第一个函数执行完成');
    return 11;
  });
}

//第二个
Future requestData2() {
  return Future(() {
    sleep(Duration(seconds: 2));
    print('第二个函数执行完成');
    // return 22;
    throw '第二个函数执行失败';

  });
}

// 第三个
Future requestData3() {
  return Future(() {
    sleep(Duration(seconds: 2));
    print('第三个函数执行完成');
    return 33;
  });
}
